//package lib.popup
//
//import android.app.Activity
//import android.app.Dialog
//import android.content.Context
//import android.content.ContextWrapper
//import android.content.res.Configuration
//import android.graphics.Color
//import android.os.Build
//import android.os.Bundle
//import android.view.*
//import com.blankj.utilcode.util.BarUtils
//import com.blankj.utilcode.util.RomUtils
//import com.blankj.utilcode.util.ScreenUtils
//
///**
// *  author: luoXiong
// *  e-mail: 382060748@qq.com
// *  date: 2021/9/2 17:05
// *  version: 1.0
// *  desc:
// */
//class BaseDialog(context: Context, var contentView: BasePopupView) : Dialog(context, R.style._XPopup_TransparentDialog) {
//
//
//     init {
//         (contentView.parent as? ViewGroup)?.removeView(contentView)
//     }
//
//    override fun onCreate(savedInstanceState: Bundle?) {
//        super.onCreate(savedInstanceState)
//        val w = window
//        if (w == null || contentView.popupInfo == null) return
//        if (contentView.popupInfo.enableShowWhenAppBackground) {
//            if (Build.VERSION.SDK_INT >= 26) {
//                window!!.setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY)
//            } else {
//                window!!.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
//            }
//        }
//        if (contentView.popupInfo.keepScreenOn) {
//            w.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
//        }
//        w.setBackgroundDrawable(null)
//        w.decorView.setPadding(0, 0, 0, 0)
//        w.setFlags(
//            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
//            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
//        )
//        w.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
//
//        //设置全屏
//        val option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
//        w.decorView.systemUiVisibility = option
//
//        //处理VIVO手机8.0以上系统部分机型的状态栏问题和弹窗下移问题
//        val isPortrait = (context.resources.configuration.orientation
//                == Configuration.ORIENTATION_PORTRAIT)
//        w.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT)
//        if (isFuckVIVORoom() && isPortrait) {
//            w.setLayout(
//                WindowManager.LayoutParams.MATCH_PARENT, Math.max(
//                    ScreenUtils.getAppScreenHeight(),
//                    ScreenUtils.getScreenHeight()
//                )
//            )
//            w.decorView.translationY = -BarUtils.getStatusBarHeight().toFloat()
//        }
//
//        //remove status bar shadow
//        setWindowFlag(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS or WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, false)
//        w.statusBarColor = Color.TRANSPARENT
//        val navigationBarColor = getNavigationBarColor(w)
//        if (navigationBarColor != 0) w.navigationBarColor = navigationBarColor
//        w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) //尝试兼容部分手机上的状态栏空白问题
//
//        //隐藏导航栏
//        if (!contentView.popupInfo.hasNavigationBar) {
//            hideNavigationBar()
//        }
//        if (!contentView.popupInfo.isRequestFocus) { //不获取焦点
//            val flag = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
//            w.setFlags(flag, flag)
//        }
//        setStatusBarMode()
//        setNavBarLightMode()
//        setContentView(contentView)
//    }
//
//    private fun getNavigationBarColor(window: Window): Int {
//        var color = contentView.popupInfo.navigationBarColor
//        if (color == 0) {
//            color = BarUtils.getNavBarColor(window)
//        }
//        return color
//    }
//
//    fun isFuckVIVORoom(): Boolean {
//        //vivo的Y开头的8.0和8.1系统特殊(y91 y85 y97)：dialog无法覆盖到状态栏，并且坐标系下移了一个状态栏的距离
//        val isYModel = Build.MODEL.contains("Y") || Build.MODEL.contains("y")
//        return RomUtils.isVivo() && (Build.VERSION.SDK_INT == 26 || Build.VERSION.SDK_INT == 27) && isYModel
//    }
//
//    fun setWindowFlag(bits: Int, on: Boolean) {
//        val winParams = window!!.attributes
//        if (on) {
//            winParams.flags = winParams.flags or bits
//        } else {
//            winParams.flags = winParams.flags and bits.inv()
//        }
//        window!!.attributes = winParams
//    }
//
//    fun setStatusBarMode() {
//        //隐藏状态栏
//        if (!contentView.popupInfo.hasStatusBar) {
//            val decorView = window!!.decorView as ViewGroup
//            val uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
//                    View.SYSTEM_UI_FLAG_FULLSCREEN
//            window!!.decorView.systemUiVisibility = decorView.systemUiVisibility or uiOptions
//            return
//        }
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//            val decorView = window!!.decorView
//            var vis = decorView.systemUiVisibility
//            if (contentView.popupInfo.isLightStatusBar) {
//                vis = vis or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
//            } else {
//                vis = vis and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv()
//            }
//            decorView.systemUiVisibility = vis
//            window!!.statusBarColor = contentView.popupInfo.statusBarBgColor
//        }
//    }
//
//    fun hideNavigationBar() {
//        val decorView = window!!.decorView as ViewGroup
//        var i = 0
//        val count = decorView.childCount
//        while (i < count) {
//            val child = decorView.getChildAt(i)
//            val id = child.id
//            if (id != View.NO_ID) {
//                val resourceEntryName = getResNameById(id)
//                if ("navigationBarBackground" == resourceEntryName) {
//                    child.visibility = View.INVISIBLE
//                }
//            }
//            i++
//        }
//        val uiOptions =  //                View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
//            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
//                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or  //                View.SYSTEM_UI_FLAG_IMMERSIVE |
//                    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY //               | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//        //                View.SYSTEM_UI_FLAG_FULLSCREEN |
//        decorView.systemUiVisibility = decorView.systemUiVisibility or uiOptions
//    }
//
//    private fun getResNameById(id: Int): String {
//        try {
//            return context.resources.getResourceEntryName(id)
//        } catch (ignore: Exception) {
//            return ""
//        }
//    }
//
//    fun setNavBarLightMode() {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//            val decorView = window!!.decorView
//            var vis = decorView.systemUiVisibility
//            if (contentView?.popupInfo.isLightNavigationBar) {
//                vis = vis or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
//            } else {
//                vis = vis and View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.inv()
//            }
//            decorView.systemUiVisibility = vis
//        }
//    }
//
//
//    override fun dispatchTouchEvent(event: MotionEvent): Boolean {
//        if (isFuckVIVORoom()) { //VIVO的部分机型需要做特殊处理，Fuck
//            event.setLocation(event.x, event.y + BarUtils.getStatusBarHeight())
//        }
//        return super.dispatchTouchEvent(event)
//    }
//
//    override fun dismiss() {
//        var context: Context? = context
//        if (context is ContextWrapper) {
//            context = context.baseContext
//        }
//        if (context is Activity) {
//            val activity = context
//            if (activity.isDestroyed || activity.isFinishing) {
//                return
//            }
//            super.dismiss()
//        } else {
//            try {
//                super.dismiss()
//            } catch (ignore: Throwable) {
//            }
//        }
//    }
//}